import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
pd.set_option("display.max_columns",500)
#在pandas中两个核心结构：Series和DataFrame

#在Series中可以使用numpy的一维数组的各种方法
#在DataFrame中，行代表观测(可以理解为记录),列代表各位变量(可以；理解为指标或列名)
dda=pd.DataFrame(np.array([[6,9,432],[2313,43,12],[64,654,24]]),columns={0:'col0',1:'col2',2:'col3'})
dda=sm.tsa.filters.hpfilter(dda, 1600)
# %%
# path='D:\\ProgramData\\MATLABProjects\\'
# table=pd.read_excel(path+'2020data结果1.xlsx',sheet_name='Sheet1',header=None,skiprows=1)
# table=table.rename(columns={0:'X标号',1:'指标名称',2:'频率',3:'单位',4:'指标ID',5:'空值',6:'相关系数',7:'期'})
# table['sort']=table['相关系数'].abs()
# table=table.sort_values(by=['期','sort'],ascending=[True,False])
# table=table.drop(labels=['sort'],axis=1)
# pd.DataFrame.to_excel(excel_writer=path+'myTestBest.xlsx',header=True,sheet_name="Sheet1")
#
# ans=pd.DataFrame(columns=['X标号','指标名称','频率','单位','指标ID','空值','相关系数','期'])
# for i in range(-4,5):
#     tmp=table.loc[(table['期']==i) & (table['相关系数'].abs()>=0.6)]
#     # tmp=table[table['相关系数']>=0.6 and (table['期']==i)]
#     if tmp.shape[0]>8:
#         tmpAns=tmp.head(8)
#         ans=pd.concat([ans,tmpAns],axis=0,ignore_index=True)
#     else:
#         ans=pd.concat([ans,tmp],axis=0,ignore_index=True)
# print(ans)
# ans.to_excel(excel_writer=path+'选取相关度最高的8个.xlsx',header=None,sheet_name='sheet1')
#%%



#用python写的步骤：
# （1）hpfliter,调用statsmodels.api的sm.tsa.filters.hpfilter(log_real_gdp, 1600)
# （2）求相关系数，得读老师的代码，然后自己写
# （3）分组过滤，取相关系数绝对值大于0.6的那些列，直接取10个算了
# （4)在（1）中得到的表中查找（3）中那些列，然后组成一个dataframe，然后进行标准化(简单)，然后主成分分析
# （5）取主成分分析后的第一列与（4）中的dataframe.*,得到结果
if __name__ == '__main__':
    df=pd.DataFrame(np.random.randint(0,30,size=16).reshape(4,4))
    df=df.reset_index()
    print(df)